package core

import (
	"errors"
	"fmt"
	"io/ioutil"
	"mytool/base"
	"os"
)

func Getpwd(args []string) (err error) {
	path, err := os.Getwd()
	fmt.Println(path)
	return err
}

func ChangeDir(args []string) (err error) {
	if len(args) != 2 {
		return errors.New("参数错误")
	}
	return os.Chdir(args[1])
}

func ShowCurrentFileList(args []string) (err error) {
	path, _ := os.Getwd()
	if len(args) == 2 {
		path = args[1]
	}

	fileInfoList, err := ioutil.ReadDir(path)
	if err != nil {
		return err
	}

	for _, v := range fileInfoList {
		time := v.ModTime().Format("2006-01-02 15:04:05")
		prefix := "[-]"
		if v.IsDir() {
			prefix = "[+]"
		}
		fmt.Println(time, prefix, "\t", v.Name(), "\t", v.Size())
	}
	return nil
}

func ReadFile(args []string) (err error) {
	if len(args) != 2 {
		return errors.New("参数错误")
	}

	bytes, err := ioutil.ReadFile(args[1])
	fmt.Println(string(bytes))

	return err
}

func FileTools() []*base.Option {
	return []*base.Option{
		&base.Option{"pwd", Getpwd, "查看当前目录"},
		&base.Option{"cd", ChangeDir, "cd <指定目录> 切换工作目录"},
		&base.Option{"ls", ShowCurrentFileList, "ls [指定目录] 查看当前或指定目录下的文件列表"},
		&base.Option{"cat", ReadFile, "cat <指定文件名> 查看指定文件的内容"},
	}
}
